package com.huaxin.device.models;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.huaxin.device.dto.enums.AlarmLevel;
import com.huaxin.hxenum.enums.DeviceType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 描述：报警阈值模板
 **/
@Data
@TableName("alarm_threshold_templates")
@EqualsAndHashCode(callSuper = true)
public class AlarmThresholdTemplate extends BaseModel {

    /**
     * 模板名称，如：断路器标准阈值
     */
    @TableField(value = "template_name")
    @Schema(description = "模板名称", example = "断路器标准阈值")
    private String templateName;

    /**
     * 设备类型：circuit_breaker, environment_sensor
     */
    @TableField(value = "device_type")
    @Schema(description = "设备类型", example = "circuit_breaker")
    private DeviceType deviceType;

    /**
     * 可选：绑定具体型号
     */
    @TableField(value = "model_id")
    @Schema(description = "绑定的设备型号ID", example = "550e8400-e29b-41d4-a716-446655440000")
    private String modelId;

    /**
     * 报警等级
     */
    @TableField(value = "alarm_level")
    @Schema(description = "报警等级", example = "1")
    private AlarmLevel alarmLevel;

    /**
     * 报警消息内容模板，支持 { } 形式的参数占位符
     * 示例：设备 {deviceName} 的 {alarmType} 超出阈值 {thresholdValue}{unit}，当前值 {currentValue}{unit}
     */
    @TableField(value = "message_template")
    @Schema(
            description = "报警消息模板，支持 {key} 形式的参数占位符",
            example = "设备 {deviceName} 发生 {alarmLevel} 级报警，{alarmType} 达到 {currentValue}{unit}"
    )
    private String messageTemplate;

    /**
     * 是否为系统默认模板
     * 0=非系统默认模板，1=系统默认模板
     * 默认为非系统默认模板
     */
    @TableField(value = "is_default")
    @Schema(description = "是否为系统默认模板", example = "0")
    private Boolean isDefault = false;

    /**
     * 描述
     */
    @TableField(value = "description")
    @Schema(description = "描述", example = "适用于标准断路器的通用报警阈值配置")
    private String description;

    /**
     * 组织家族ID（org_family）
     */
    @TableField(value = "family_id")
    @Schema(description = "组织家族ID", example = "f3b2f8e1-4c5d-4e6f-8b2a-1c2d3e4f5a6b")
    private String familyId;
}